<?php 

/**
 * 商品管理控制器
 */
class ShopController extends AuthController{
	public $model;

	public function __init(){
		parent::__init();
		//关联模型
		$this->model = K('Shop');
	}
		
	//商品管理首页
	public function index(){
		//获得商品表数据
		$data = $this->model->all();
		$this->assign('data',$data);
	    $this->display();
	}
	
	//添加商品
	public function add(){
		//获取分类表数据
		$cateData = K('Category')->all();
		//把分类表数据转成树状结构
		$cateData = Data::tree($cateData, 'cname');
		//分配分类表数据到模板
		$this->assign('cateData',$cateData);
		
		//获取品牌表数据
		$brandData = K('Brand')->all();
		//分配分类表数据到模板
		$this->assign('brandData',$brandData);	
		
		if(IS_POST){
			//调用模型的添加，里面包含自动验证
		 	if(!$this->model->addData()){
		 		$this->error($this->model->error);
		 	} 
			$this->success('发布商品成功',U('Admin/Shop/index'));
		}	
	    $this->display();
	}
	
	//编辑商品
	public function edit(){
		if(IS_POST){
			p($_POST);
//			//调用模型的修改，里面包含自动验证
//		 	if(!$this->model->editData()){
//		 		$this->error($this->model->error);
//		 	} 
//			$this->success('修改商品成功',U('Admin/Shop/index'));
		}
		
		//获取分类表数据
		$cateData = K('Category')->all();
		//把分类表数据转成树状结构
		$cateData = Data::tree($cateData, 'cname');
		//分配分类表数据到模板
		$this->assign('cateData',$cateData);
		
		//获取品牌表数据
		$brandData = K('Brand')->all();
		//分配分类表数据到模板
		$this->assign('brandData',$brandData);			
		
		//获得所修改商品旧数据
		$sid = Q('get.sid',0,'intval');
		//获得商品表数据
		$oldShop = $this->model->where("sid={$sid}")->find();
		//分配数据
		$this->assign('oldShop',$oldShop);
		
		
		//找到该商品的分类id
		$tid = $oldShop['type_tid'];
		//找到该类型id对应的类型属性数据(属性)
		$attr = K('TypeAttr')->where("type_tid={$tid} AND attr_type=0")->all();
		foreach ($attr as $k => $v) {
			$attr[$k]['ta_value'] = explode(',', $v['ta_value']);
		}
		//分配数据
		$this->assign('attr',$attr);

		//获得该商品对应的商品属性(属性)
		$shopAttr =M()->join("__shop_attr__ sa JOIN __type_attr__ ta ON sa.type_attr_ta_id=ta.ta_id")->where("attr_type=0 AND shop_sid={$sid}")->all();
		foreach ($shopAttr as $k => $v) {
			$shopAttr['oldattr'][$k] = $v['savalue'];
		}
		$oldAttr = $shopAttr['oldattr'];
		$this->assign('oldAttr',$oldAttr);
		
				
		//获得所修改商品详情表数据(规格)
		$oldDetail = K('ShopDetail')->where("shop_sid={$sid}")->find();	
		$this->assign('oldDetail',$oldDetail);
		
		//通过该tid查询类型属性表得到对应的商品规格数据
		$spec = K('TypeAttr')->where("attr_type=1 AND type_tid={$tid}")->all();		
		//重组数组
		foreach ($spec as $k => $v) {
			$spec[$k]['option'] = K('ShopAttr')->where("shop_sid={$sid} AND type_attr_ta_id={$v['ta_id']}")->all();
			$spec[$k]['ta_value'] = explode(',', $v['ta_value']);
		}		
		//分配数据
		$this->assign('spec',$spec);
		
		$this->display();
	}
	
	//删除商品
	public function del(){
	    //获得get里的sid
	    $sid = Q('get.sid',0,'intval');
		//通过sid得到商品表里的列表图地址
		$pic = $this->model->where("sid={$sid}")->getField("pic");
		//通过pic得到商品详情表里的三张图片的地址
		
		//还没做货品列表！先不做删除！！！
		
		//通过sid分别删除三张表中的数据
		//商品表
//		$this->model->where("sid={$sid}")->delete();
//		//商品属性表
//		K('ShopAttr')->where("shop_sid={$sid}")->delete();
//		//商品详情表
//		K('ShopDetail')->where("shop_sid={$sid}")->delete();
		//成功提示
//		$this->success('删除成功');
	}
	
	//异步获取属性和规格
	public function getAttrSpec(){
		//如果不是异步发送则错误提示
		if(!IS_AJAX) $this->error('非法请求');
		//获得异步发送post里的tid
		$tid = Q('post.tid',0,'intval');
		//通过类型属性表获得对应的数据
		$data = K('TypeAttr')->where("type_tid={$tid}")->all();
		//递归$data得到ta_value值并将该值转为数组形式
		foreach($data as $k => $v){
			$data[$k]['ta_value'] = explode(',', $v['ta_value']);
		}
		//异步发送回去
		$this->ajax($data);		
	}	
	
	
	//异步上传列表图
	public function upload_list(){				
	     $upload = new Upload('Upload/list/');
		 $file = $upload->upload();
		 if (empty($file)) {
		 	$this->ajax('上传失败');
		 } else {
		 	//来这个地方可以缩略图处理
		 	$data = $file[0];
			$this->ajax($data);
		 }
	}

	//异步上传商品图
	public function upload_shop(){		
	     $upload = new Upload('Upload/shop/');
		 $file = $upload->upload();
		 if (empty($file)) 
		 {
		 	$this->ajax('上传失败');
		 } else {
		 	//上传缩略处理
		 	$data = $file[0]['path'];
		 	$img = new Image();
			//重组文件名
			$big = $file[0]['dir'] . 'big' . $file[0]['filename'] . '.'.$file[0]['ext'];
			$medium = $file[0]['dir'] . 'medium' . $file[0]['filename'] . '.'.$file[0]['ext'];
			$small = $file[0]['dir'] . 'small' . $file[0]['filename'] . '.'.$file[0]['ext'];
			//这里要修改一下框架里的缩略图类
			$pathBig = $img->thumb($data,$big,420,420,5);
			$pathMedium = $img->thumb($data,$medium,242,242,5);
			$pathSmall = $img->thumb($data,$small,69,69,5);
			$data = array(
				'path1' => $pathBig,
				'path2' => $pathMedium,
				'path3' => $pathSmall
			);
			$this->ajax($data);
		 }
	}
		
	//异步删除图片
	public function delImg(){
		//如果不是异步发送则错误提示
		if(!IS_AJAX) $this->error('非法请求');		
		
	    $path = Q('post.path');
		//删除图片
		unlink($path);		
	}			
}






 ?>